print("程序开始运行")
import cv2
import sys
import os
import matplotlib.pyplot as plt
import numpy as np
import copy
from myfun import read_pic,check_dir,show_pic,save_pic

import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['font.serif'] = ['KaiTi']
mpl.rcParams['font.size'] =20
plt.rcParams['axes.unicode_minus'] = False

print("程序可以正常运行")


img_src=r"D:\Users\Administrator\PycharmProjects\图像找凹点\small"
des_path="./"

pic_str_list=[]
for file in os.listdir(img_src):
    if ".tif" in file:
        # print(file,type(file))
        pic_str_list.append(file)
print("图片名称的列表:",pic_str_list,'\n列表的长度:',len(pic_str_list))

pic_mat_list=[read_pic(img_src,file)//257 for file in pic_str_list]
print(pic_mat_list[0])

show_pic(pic_mat_list[0],"123")

# x=pic_mat_list[0]
# print(x,type(x))

#
# show_pic(np.where(x<200,x,255),"np.where()")
# plt.show()
# save_pic(pic_mat_list[0],des_path,"123.tif")
print('图片矩阵列表的长度:',len(pic_str_list),"某一个图片的长宽:",pic_mat_list[0].shape)

#得到所有图片里面最大尺寸 最大的长度  最大的宽度
height_list=[]
width_list=[]
for p in pic_mat_list:
    # print(type(p),p.shape,p.shape[0],p.shape[1],p.dtype)
    height_list.append(p.shape[0])
    width_list.append(p.shape[1])
print("height_list:",height_list,"\nwidth_list:",width_list)

max_height=np.max(height_list)
max_width=np.max(width_list)
print("最大的高度和宽度是:",max_height,max_width)

# #遍历所有的图像矩阵 每一个矩阵都新建一个很大的矩阵给放进来 最后做一个很大的矩阵把里面的装图片的矩阵都放进来
big_fig_lst=[]
for pic_img in pic_mat_list:
    #新建一个很大的画布
    pic_img=np.where(pic_img<200,pic_img,255)
    big_fig= np.ones((max_height,max_width), np.uint8)*255
    #把当前的图片放到新建的大的画布里面去
    big_fig[0:pic_img.shape[0], 0:pic_img.shape[1]] = pic_img
    #当前的画布放到一个列表中去
    big_fig_lst.append(big_fig)

#342个图片 268=4*67  67是指数  那就4个一组 然后拼接把
step=18
step_lst=[]
for s in range(0,len(pic_str_list)+1,step):
    print("s:",s,end='\t')
    step_lst.append(s)
print('\n',step_lst)

v_stac_lst=[]
for i in range(len(step_lst)-1):
    start=step_lst[i]
    end=step_lst[i+1]
    print(start,end,end='|')
    v_stac_lst.append(cv2.hconcat(big_fig_lst[start:end]))

print("\n最后要放在竖直拼接的函数里面的list长度:",len(v_stac_lst))

asmld=cv2.vconcat(v_stac_lst)

bianJie=50

new_bianJie_fig=np.ones((asmld.shape[0]+100,asmld.shape[1]+100), np.uint8)*255
new_bianJie_fig[50:-50,50:-50]=asmld

# show_pic(big_fig,"合成的大图")
save_pic(asmld,des_path,"合成的大图.tif")

save_pic(new_bianJie_fig,des_path,"合成的大图加边界.tif")
